package com.eastfair.imaster.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.eastfair.annotation.annotation.languageswith.LanguageField;
import com.eastfair.annotation.annotation.vo.VoInfo;
import com.eastfair.vo.VoGroupClass;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;

/**
 * <p>
 * 实体类
 * 公司表
 * </p>
 *
 * @author ligang
 * @since 2021-08-28
 */
@Data
public class CompanyVo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Long id;

    /**
     * 项目ID
     */
    @ApiModelProperty(value = "项目ID")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Long projectId;

    /**
     * 企业是否认证 1是 0否
     */
    @ApiModelProperty(value = "企业是否认证 1是 0否")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Integer isAuthentication;

    /**
     * 公司名称
     */
    @ApiModelProperty(value = "公司名称")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    @LanguageField(groups="name_language")
    private String name;

    /**
     * 公司英文名称
     */
    @ApiModelProperty(value = "公司英文名称")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    @LanguageField(groups="name_language")
    private String enName;

    /**
     * 地址
     */
    @ApiModelProperty(value = "地址")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    @LanguageField(groups="address_language")
    private String address;

    /**
     * 英文地址
     */
    @ApiModelProperty(value = "英文地址")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    @LanguageField(groups="address_language")
    private String enAddress;

    /**
     * 国家ID
     */
    @ApiModelProperty(value = "国家ID")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String countryId;

    /**
     * 省份ID
     */
    @ApiModelProperty(value = "省份ID")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String provinceId;

    /**
     * 城市ID
     */
    @ApiModelProperty(value = "城市ID")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String cityId;




    /**
     * 国家名称
     */
    @ApiModelProperty(value = "国家名称")
    @Size(max = 255, message = "国家名称长度不能超过255")
    @TableField(value = "country_name", condition = LIKE)
    @Excel(name = "国家名称")
    private String countryName;

    /**
     * 省份名称
     */
    @ApiModelProperty(value = "省份名称")
    @Size(max = 255, message = "省份名称长度不能超过255")
    @TableField(value = "province_name", condition = LIKE)
    @Excel(name = "省份名称")
    private String provinceName;

    /**
     * 城市名称
     */
    @ApiModelProperty(value = "城市名称")
    @Size(max = 255, message = "城市名称长度不能超过255")
    @TableField(value = "city_name", condition = LIKE)
    @Excel(name = "城市名称")
    private String cityName;

    /**
     * 公司logo
     */
    @ApiModelProperty(value = "公司logo")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String logoImage;

    /**
     * 微信宣传视频
     */
    @ApiModelProperty(value = "微信宣传视频")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String wechatAdvertsVideo;

    /**
     * 宣传视频
     */
    @ApiModelProperty(value = "宣传视频")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String advertsVideo;

    /**
     * 宣传视频缩略图
     */
    @ApiModelProperty(value = "宣传视频缩略图")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String advertsVideoImage;

    /**
     * 宣传图片
     */
    @ApiModelProperty(value = "宣传图片")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String advertsImage;

    /**
     * 联系邮箱
     */
    @ApiModelProperty(value = "联系邮箱")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String email;

    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String telephone;

    /**
     * 传真
     */
    @ApiModelProperty(value = "传真")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String fax;

    /**
     * 展商品牌
     */
    @ApiModelProperty(value = "展商品牌")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    @LanguageField(groups="brand_language")
    private String brand;

    /**
     * 展商英文品牌
     */
    @ApiModelProperty(value = "展商英文品牌")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    @LanguageField(groups="brand_language")
    private String enBrand;

    /**
     * 邮编
     */
    @ApiModelProperty(value = "邮编")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String zipCode;

    /**
     * 公司规模
     */
    @ApiModelProperty(value = "公司规模")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String companyScale;

    /**
     * 注册资本
     */
    @ApiModelProperty(value = "注册资本")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String registeredCapital;

    /**
     * 纳税识别号
     */
    @ApiModelProperty(value = "纳税识别号")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String identificationNumber;

    /**
     * 是否上市
     */
    @ApiModelProperty(value = "是否上市")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private Integer isListed;

    /**
     * 网址
     */
    @ApiModelProperty(value = "网址")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String website;

    /**
     * 展商简介
     */
    @ApiModelProperty(value = "展商简介")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    @LanguageField(groups="introduction_language")
    private String introduction;

    /**
     * 公司英文简介
     */
    @ApiModelProperty(value = "公司英文简介")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    @LanguageField(groups="introduction_language")
    private String enIntroduction;

    /**
     * 产品简介
     */
    @ApiModelProperty(value = "产品简介")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    @LanguageField(groups="productIntroduction_language")
    private String productIntroduction;

    /**
     * 展品英文描述
     */
    @ApiModelProperty(value = "展品英文描述")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    @LanguageField(groups="productIntroduction_language")
    private String enProductIntroduction;

    /**
     * 公司认证
     */
    @ApiModelProperty(value = "公司认证")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String certification;

    /**
     * 3D展位链接
     */
    @ApiModelProperty(value = "3D展位链接")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String url3d;

    /**
     * 展商联系人姓名
     */
    @ApiModelProperty(value = "展商联系人姓名")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String contactName;

    /**
     * 展商联系人手机号码
     */
    @ApiModelProperty(value = "展商联系人手机号码")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String contactMobile;

    /**
     * 展商联系人邮箱
     */
    @ApiModelProperty(value = "展商联系人邮箱")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String contactEmail;

    /**
     * 展商会务联系人姓名
     */
    @ApiModelProperty(value = "展商会务联系人姓名")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String contactWorkName;

    /**
     * 展商会务联系人手机号码
     */
    @ApiModelProperty(value = "展商会务联系人手机号码")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String contactWorkMobile;

    /**
     * 展商会务联系人邮箱
     */
    @ApiModelProperty(value = "展商会务联系人邮箱")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String contactWorkEmail;

    /**
     * vr 跳转地址
     */
    @ApiModelProperty(value = "vr 跳转地址")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private String vrUrl;

    /**
     * 员工
     */

    @ApiModelProperty(value = "员工")
    @JsonInclude(JsonInclude.Include.NON_NULL)
//    @VoInfo(groups = {VoGroupClass.all.class})
    @VoInfo(groups = {ImasterVoGroupClass.exhibitorDetailOfReadOnly.class})
    private List<EmployeeVo> employeeVoList;

    /**
     * 角色id集合
     */
    @ApiModelProperty(value = "角色id集合")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private List<Long> roleIds;

    /**
     * 组织id集合
     */
    @ApiModelProperty(value = "组织id集合")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private List<Long> orgIds;

    /**
     * 组织名称集合
     */
    @ApiModelProperty(value = "组织名称集合")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoGroupClass.all.class})
    private List<String> orgNames;



    /**
     * 营业执照照片
     */
    @ApiModelProperty(value = "营业执照照片")
    @Size(max = 1024, message = "营业执照照片长度不能超过1024")
    @TableField(value = "business_license_image", condition = LIKE)
    @Excel(name = "营业执照照片")
    private String businessLicenseImage;

    /**
     * 公司法人
     */
    @ApiModelProperty(value = "公司法人")
    @Size(max = 255, message = "公司法人长度不能超过255")
    @TableField(value = "corp", condition = LIKE)
    @Excel(name = "公司法人")
    private String corp;

    /**
     * 公司法人身份证
     */
    @ApiModelProperty(value = "公司法人身份证")
    @Size(max = 255, message = "公司法人身份证长度不能超过255")
    @TableField(value = "corp_idcard", condition = LIKE)
    @Excel(name = "公司法人身份证")
    private String corpIdcard;

    /**
     * 公司法人身份证正面
     */
    @ApiModelProperty(value = "公司法人身份证正面")
    @Size(max = 1024, message = "公司法人身份证正面长度不能超过1024")
    @TableField(value = "corp_idcard_front_image", condition = LIKE)
    @Excel(name = "公司法人身份证正面")
    private String corpIdcardFrontImage;

    /**
     * 公司法人身份证反面
     */
    @ApiModelProperty(value = "公司法人身份证反面")
    @Size(max = 1024, message = "公司法人身份证反面长度不能超过1024")
    @TableField(value = "corp_idcard_side_image", condition = LIKE)
    @Excel(name = "公司法人身份证反面")
    private String corpIdcardSideImage;

    /**
     * 统一社会信用代码
     */
    @ApiModelProperty(value = "统一社会信用代码")
    @Size(max = 255, message = "统一社会信用代码长度不能超过255")
    @TableField(value = "organization_code", condition = LIKE)
    @Excel(name = "统一社会信用代码")
    private String organizationCode;


    /**
     * 公司管理员姓名
     */
    @ApiModelProperty(value = "公司管理员姓名")
    private String adminName;

    /**
     * 公司管理员手机
     */
    @ApiModelProperty(value = "公司管理员手机")
    private String adminMobile;

    /**
     * 公司管理员邮箱
     */
    @ApiModelProperty(value = "公司管理员邮箱")
    private String adminEmail;






    /**
     * 联系电话前缀
     */
    @ApiModelProperty(value = "联系电话前缀")
    private String telephonePrefix;

    /**
     * 传真前缀
     */
    @ApiModelProperty(value = "传真前缀")
    private String faxPrefix;


    /**
     * 展商联系人手机号码前缀
     */
    @ApiModelProperty(value = "展商联系人手机号码前缀")
    private String contactMobilePrefix;

    /**
     * 展商会务联系人手机号码前缀
     */
    @ApiModelProperty(value = "展商会务联系人手机号码前缀")
    private String contactWorkMobilePrefix;

}
